{{indexmenu_n>3}}

====== Plugin Guidelines ======

**These are the guidelines for publishing OpenCPN Plugins on OpenCPN.org:**

Plugins published on OpenCPN.org must be distributable under the license terms of [[:opencpn:developer_manual:plugins:plugin_api:gpl_v2|GPL V2]] or later.

  - In particular, this means that the Plugin author must arrange for independent publication of the source code of the Plugin. OpenCPN.org will not host the Plugin source code. [[http://sourceforge.net/|Sourceforge]] or [[http://github.com/|Github]] are acceptable source publication methods. Others may be approved on application.
  - Plugins published on OpenCPN.org must be ported and available for one of the following list of platforms:
  - Debian style Linux
  - Microsoft Windows
  - Macintosh OS-X
  - //Developers should keep in mind that the usability and popularity of a Plugin is directly related to its platform portability, and so should strive to make their Plugins available for all OpenCPN platforms.//
  - Plugins published on OpenCPN.org must be freely available for user download on demand, without fee or cost.
  - Plugin binaries may exist on the OpenCPN.org server or elsewhere

**Hints for using GitHub:**

  * Developers should avoid including any compiled or extraneous files alongside the source code. This increases download times and bloats any releases.
  * Always consider making a release tag. This produces a zip file of the source code and a tarball.
  * Version numbers of releases should be lower case (e.g. v1.1). This makes life easier for Gentoo package makers.
  * Dlls (Windows) and other files associated with the plugin can be added to the releases section of your plugin GitHub page. You may wish to make a Windows installer yourself to place here.
  * Visual Studio inserts a 'Version.h' file in the source code. This is not needed and should be removed.

**How to publish OpenCPN plugins on OpenCPN.org:**

Before asking for a plugin to be added to the OpenCPN.org server consider submitting a Beta version by following the guidelines [[opencpn:user_manual:plugins:other:shipdriver|here]]. This allows users to test and review the plugin, offer suggestions and notify the author of any bugs.

Even at the Beta stage you are encouraged to produce a user guide for the plugin. A template showing the sort of information needed is [[:opencpn:developer_manual:plugins:beta_plugins:plugin_page_template|here.]]

When you are satisfied that the plugin is ready for release please look at the [[:opencpn:developer_manual:plugins:plugin_submissions|Plugin Submissions]] page for more details.

You can have edit access to this wiki, allowing you to make the User Guide. There is a User Guide template [[:opencpn:developer_manual:plugins:beta_plugins:plugin_page_template|here ]]and the completed guide can be added to the [[opencpn:opencpn_user_manual:plugins|OpenCPN User Manual.]]

Even after the plugin has been published bugs may still exist or you may wish to improve the plugin. If work is being done on a further beta version it may be useful to have an entry on the [[opencpn:user_manual:plugins:other:shipdriver|Beta Plugins ]]page to help users find and review the update to your work.

